package golang

import (
	"log"
	"os"
)

// defer在函数退出时才能执行，在for执行defer会导致资源延迟释放：
func main() {
	for i := 0; i < 5; i++ {
		f, err := os.Open("/path/to/file")
		if err != nil {
			log.Fatal(err)
		}
		defer f.Close()
	}
}

// 解决方法
//func main() {
//	for i := 0; i < 5; i++ {
//		func() {
//			f, err := os.Open("/path/to/file")
//			if err != nil {
//				log.Fatal(err)
//			}
//			defer f.Close()
//		}()
//	}
//}
